package com.michael.leetcode;

public class CheckStraightLine_1232 {


/*    1232. 缀点成线
    给定一个数组 coordinates ，其中 coordinates[i] = [x, y] ， [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断，这些点是否在该坐标系中属于同一条直线上。

    示例 1：
    输入：coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
    输出：true

    示例 2：
    输入：coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]]
    输出：false

    提示：
        2 <= coordinates.length <= 1000
        coordinates[i].length == 2
        -10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
        coordinates 中不含重复的点

    思路：如果三个点在同一条直线上则满足如下公式：(x1,y1)  (x2,y2)  (x3,y3)
    (y2-y1)/(x2-x1) == (y3-y1)/(x3-x1)

        */
    public boolean checkStraightLine(int[][] coordinates) {
        if (coordinates.length == 2){
            return true;
        }
        for (int i = 0; i < coordinates.length-2 ; i++) {
            int[] f = coordinates[i];
            int[] s = coordinates[i+1];
            int[] t = coordinates[i+2];
            if ((s[0] - f[0])*(t[1]-f[1]) != (s[1]-f[1])*(t[0]-f[0])){
                return false;
            }
        }
        return true;
    }
}
